package OBS;
import java.util.regex.Pattern;

/**
 * Validerings værktøj til at sikre valide input gennem GUI
 * @author Jesper Wistoft Nielsen
 */
public class InputValidator {

    /**
     * Validerer email, se http://www.regular-expressions.info/email.html for
     * dokumentation og begrænsninger
     *
     * @param input email adresss der ønskes valideret
     * @return true/false
     */
    public static boolean validateEmail(String input) {
        if (input.length()<=100) {
            // documentation: http://www.regular-expressions.info/email.html
            return (Pattern.matches("[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?",input));
        } else return false;
    }

    /**
     * Validerer et customer navn, sikrer blot at der ikke er angiver mere end
     * 100 tegn
     *
     * @param input customer navn der skal valideres
     * @return true/false
     */
    public static boolean validateCustomerName(String input) {
        return Pattern.matches(".{1,100}", input);
    }

    /**
     * Validerer et batchReportSystem navn. Navnet må indeholde tegnene a-z
     * (store eller små bogstaver), 0-9 samt underscore eller bindestreg.
     * Må desuden maksimalt indeholde 100 tegn
     *
     * @param input batchReportSystem navn der skal valideres
     * @return true/false
     */
    public static boolean validateReportSystemName(String input) {
        return Pattern.matches("[\\w_-]{1,100}", input);
    }

    /**
     * Validerer et subscriber navn (person navn). Navnet skal starte med et
     * stort bogstav (A-Å) og være efterfulgt af en vilkårlig blanding af store
     * og småbogstaver (a-å), mellemrum kan også indgå. Maksimalt 100 tegn ialt.
     * 
     * @param input subscriber navn der ønskes valideret
     * @return true/false
     */
    public static boolean validateSubscriberName(String input) {
        return Pattern.matches("[A-ZÆØÅ][a-zæøåA-ZÆØÅ ]{1,99}", input);
    }
}
